﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DAL;
using System.Data;
using System.IO;
using System.Configuration;
using System.Transactions;
using System.Data.Linq;
using System.ComponentModel;
using UtilityExtensions;


namespace BOL.Comparativos
{
    public class GetComparativoExcel
    {

        int _count;

        public int Count(int idObra,
            DateTime fechaInicio,
            DateTime fechaFin,
            int startRowIndex,
            int maximumRows,
            string sortExpression)
        {
            return _count;
        }


        private IQueryable<ComparativoExcel> ApplySelect_ListInfo()
        {
            
            


            var q = from a in DbUtil.Db.Comparativos
                    select new ComparativoExcel
                    {
                        CODIGO=a.numDocumento,
                        COMPARATIVO=a.descripcion,
                        ESTADO = (a.idEstado == 1 & a.idProveedorSelec != null) ? "Pendiente" : a.GrupoDatoitem.descripcion,
                        ESTRUCTURA= a.EstructuraCosto.descripcion,
                        FECHA=a.fecha.Value.ToShortDateString(),
                        FECHA_APRO=a.fechaAprob,
                        MONEDA=a.Moneda.descripcion,
                        MONTOBASE = a.totalComparativo.Value,
                        MONTOCONTRATADO=a.ComparativoProveedors.Sum(p => p.totalContratado).Value,
                        PROVEEDOR=a.idProveedorSelec==null?"":a.Proveedor.descripcion,
                        SALDODISPONIBLE = a.ComparativoProveedors.Sum(p => p.totalContratado.Value - p.totalUso.Value),
                        TIPOCAMBIO=a.tipoCambio,
                       // totalBaseProveedorSelec = a.getMontoBaseContrataListaTotal(DbUtil.Db),
                        
                        

                    };
            return q;






        }


        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public IEnumerable<ComparativoExcel> Execute(int idObra)
        {

            var q = from a in DbUtil.Db.Comparativos
                    where a.idObra == idObra
                    select new ComparativoExcel
                    {   
                        CODIGO = String.Format("'{0}", a.numDocumento),
                        COMPARATIVO = a.descripcion,
                        ESTADO = (a.idEstado == 1 & a.idProveedorSelec != null) ? "Pendiente" : a.GrupoDatoitem.descripcion,
                        ESTRUCTURA = a.EstructuraCosto.descripcion,
                        FECHA = a.fecha.Value.ToShortDateString(),
                        FECHA_APRO =a.fechaAprob,
                        MONEDA = a.Moneda.descripcion,
                        MONTOBASE = a.totalComparativo.Value,
                        MONTOCONTRATADO = (a.ComparativoProveedors.Count == 0) ? 0 : a.ComparativoProveedors.Sum(p => p.totalContratado).Value,
                        PROVEEDOR = a.idProveedorSelec == null ? "" : a.Proveedor.descripcion,
                        SALDODISPONIBLE = (a.ComparativoProveedors.Count == 0) ? 0 : a.ComparativoProveedors.Sum(p => p.totalContratado.Value - p.totalUso.Value),
                        TIPOCAMBIO = a.tipoCambio
                    };
            _count = q.Count();
            return q;



        }

    }
}
